/**
 * Copyright (C) 2008 Huascar A. Sanchez.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.gotobject.inject.resources;

import com.google.inject.BindingAnnotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * annotates resources that will be loaded from a {@code resource.properties}
 * file and will be injected into their appropiate {@link Resources.ResourceType target} by using
 * {@link com.google.inject.Guice Guice}.
 *
 * <pre>
 * class LittleClass {
 * 	  Image myImage;
 * 	  @Inject
 * 	  LittleClass(@Resource(key="refcard.image") Image myImage) {
 *      this.myImage = myImage;
 * 	  }
 *
 * 	  Image getImage(){            
 * 	    return myImage;
 * 	  }
 *
 * }</pre>
 *
 *
 * @author huascar.sanchez@gmail.com (Huascar A. Sanchez)
 * @version $Revision: 23 $ submitted on $Date: 2008-09-13 20:00:59 +0000 (Sat, 13 Sep 2008) $ by $Author: huascar.sanchez $
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD})
@BindingAnnotation
public @interface Resource {
    /**
     * @return the key of the annotation.
     */
    String key();
}
